short="${long:0:2}";echo"${sho" />
如何提取字符串的前两个字符(Shell脚本)? 您所在的位置:网站首页 shell 脚本截取字符串 如何提取字符串的前两个字符(Shell脚本)?

如何提取字符串的前两个字符(Shell脚本)?

#如何提取字符串的前两个字符(Shell脚本)?| 来源: 网络整理| 查看: 265

可能最有效的方法是,如果你使用bashshell(并且您似乎基于您的注释),则使用参数扩展的子字符串变体:

pax> long="USCAGol.blah.blah.blah" pax> short="${long:0:2}" ; echo "${short}" US

这将short成为前两个字符long。如果long少于两个字符,short则与其相同。

如果你还想确保最短的长度,你可以用类似的方式将它放在手边:

pax> long="A" pax> tmpstr="${long}.." pax> short="${tmpstr:0:2}" ; echo "${short}" A.

这可以确保长度小于两个字符的任何内容都可以用句点填充(或者其他方法,只需更改创建时使用的字符tmpstr)即可。目前还不清楚你是否需要这个,但我认为我会为了完整而加入。

说了这么多,有很多方法可以用外部程序来做到这一点(例如,如果你没有bash提供给你),其中一些方法是:

short=$(echo "${long}" | cut -c1-2) short=$(echo "${long}" | head -c2) short=$(echo "${long}" | awk '{print substr ($0, 0, 2)}' short=$(echo "${long}" | sed 's/^\(..\).*/\1/')

前两个(cut和head)对于单行字符串是相同的 - 他们基本上都会让你回到前两个字符。它们的不同之处在于它cut会给出每行的前两个字符,并head会给出整个输入的前两个字符

第三个使用awk子字符串函数提取前两个字符,第四个使用sed捕获组(使用()和\1)捕获前两个字符并用它们替换整个行。它们都相似cut- 它们提供输入中每行的前两个字符。

如果你确定你的输入是单行的,那么这些都不重要,它们都具有相同的效果。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有